package com.tongguan.paypos.utils;

import android.util.Log;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.regex.Pattern;

/**
 * Created by Joylive on 2016/9/13 .
 */
public class NumberUtils {

    /**金额为分的格式 */
    private static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+";

    /**
     * @param value
     * @return  返回人民币金额字符串格式( ￥12,555,555.50)
     */
    public static String getMoneyType(double value){
        NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.CHINA);
       return   numberFormat.format(value);
    }

    /**
     * @param value
     * @return  返回金额字符串格式( 12,555,555.50)
     */
    public static String getMoneyTypeIgnore(double value){
        NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.CHINA);
        String format = numberFormat.format(value);
        return format.replace("￥","");
    }

    /**
     * @param value
     * @return 千分位显示
     */
    public static String getNumberType(double value){
        NumberFormat numberFormat = NumberFormat.getNumberInstance();
        return   numberFormat.format(value);
    }

    /**
     * @param value
     * @return 将double 类型 四舍五入 保留两位小数 格式成字符串
     */
    public static String getDoubleFormat(double value){
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        return decimalFormat.format(value);
    }

    /**
     * 判断一个字符串是否为整数
     * @param param
     * @return
     */
    public static boolean isNumeric(String param) {
        if (param == null || param == "") {
            return false;
        }
        Pattern pattern = Pattern.compile("[0-9]*");
        return pattern.matcher(param).matches();
    }

    /**
     * 将分为单位的转换为元 （除100）
     * @param amount
     * @return
     * @throws Exception
     */
    public static double changeF2Y(String amount) throws Exception{
        if(!amount.matches(CURRENCY_FEN_REGEX)) {
            throw new Exception("金额格式有误");
        }
        return BigDecimal.valueOf(Long.valueOf(amount)).divide(new BigDecimal(100)).doubleValue();
    }

    /**
     * @param amount
     * @return
     * @throws Exception
     */
    public static double changeF2Y(Long amount) throws Exception{
        if(!amount.toString().matches(CURRENCY_FEN_REGEX)) {
            throw new Exception("金额格式有误");
        }
        return BigDecimal.valueOf(amount).divide(new BigDecimal(100)).doubleValue();
    }

    /**
     * 将元为单位的转换为分 （乘100） 金额为分 超过小数点3位直接去掉
     * @param amount
     * @return
     */
    public static long changeY2F(String amount){
      return   BigDecimal.valueOf(Double.valueOf(amount)).multiply(new BigDecimal(100)).longValue();
    }

    /**
     * @param amount
     * @return
     */
    public static long changeY2F(double amount){
        return   BigDecimal.valueOf(amount).multiply(new BigDecimal(100)).longValue();
    }


    public static String getAmount(long amount){
        // 得到一个NumberFormat的实例
        NumberFormat nf = NumberFormat.getInstance();
        // 设置是否使用分组
        nf.setGroupingUsed(false);
        // 设置最大整数位数
        nf.setMaximumIntegerDigits(12);
        // 设置最小整数位数
        nf.setMinimumIntegerDigits(12);
        // 输出测试语句
        return  nf.format(amount);
    }


    //盛本金额换算
    public static String getP2LAmount(long amount){
        String mAmount = String.valueOf(amount);
        int len = 12 - mAmount.length();
        String s = "";
        for(int i = len ;i > 0 ; i--){
            s = s +"0";
        }
        Log.e("tag", s+mAmount);
        return s+mAmount;
    }

}
